/**给你一个长度为 n 下标从 0 开始的字符串 blocks ，blocks[i] 要么是 'W' 要么是 'B' ，表示第 i 块的颜色。
 字符 'W' 和 'B' 分别表示白色和黑色。

 给你一个整数 k ，表示想要 连续 黑色块的数目。

 每一次操作中，你可以选择一个白色块将它 涂成 黑色块。

 请你返回至少出现 一次 连续 k 个黑色块的 最少 操作次数。

 不完全等于求连续的黑色块最多有多少个？和连续的元音很相似但是不相同

 "WWBBBWBBBBBWWBWWWB"
 */

class Solution {
    public int minimumRecolors(String blocks, int k) {
        int n = blocks.length();
        char[] chars = blocks.toCharArray();
        int windowsVal = 0;    //窗口中白色块的个数
        int minVal = 0;       //最小白色块个数
        for (int i = 0; i < n; i++) {
            if (chars[i] == 'W')
                windowsVal++;
            if (i < k - 1)
                continue;
            if(i==k-1) minVal = windowsVal;
            minVal = Math.min(minVal, windowsVal);
            if (chars[i - k + 1] == 'W')
                windowsVal--;
        }
        return minVal;
    }
}